﻿using System;
// 如果事件不传递额外信息，可以使用预定义的非泛化委托EventHandler。
// 本例中，我们重写Stock类，使Price属性发生变化时，引发PriceChanged事件，事件除了传达已经发生的信息外没有必须传递的信息。为了避免对EventArgs不必要的初始化，这里使用EventArgs.Empty属性。

namespace _095_标准事件模式3
{
    public class Stock
    {
        string symbol;
        decimal price;
        public Stock(string symbol) { this.symbol = symbol; }
        public event EventHandler PriceChanged;

        protected virtual void OnPriceChanged(EventArgs e)
        {
            if (PriceChanged != null) PriceChanged(this, e);
        }

        public decimal Price
        {
            get { return price; }
            set
            {
                if (price == value) return;
                price = value;
                OnPriceChanged(EventArgs.Empty);// 本例中，我们重写Stock类，使Price属性发生变化时，引发PriceChanged事件，事件除了传达已经发生的信息外没有必须传递的信息。为了避免对EventArgs不必要的初始化，这里使用EventArgs.Empty属性。
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}
